/*
 * odtExport - Экспорт из odt в html
 * Copyright (C) 2011 Камнев Георгий Павлович
 *
 * Это программа является свободным программным обеспечением. Вы можете
 * распространять и/или модифицировать её согласно условиям Стандартной
 * Общественной Лицензии GNU, опубликованной Фондом Свободного Программного
 * Обеспечения, версии 3 или, по Вашему желанию, любой более поздней версии.
 * Эта программа распространяется в надежде, что она будет полезной, но БЕЗ
 * ВСЯКИХ ГАРАНТИЙ, в том числе подразумеваемых гарантий ТОВАРНОГО СОСТОЯНИЯ ПРИ
 * ПРОДАЖЕ и ГОДНОСТИ ДЛЯ ОПРЕДЕЛЁННОГО ПРИМЕНЕНИЯ. Смотрите Стандартную
 * Общественную Лицензию GNU для получения дополнительной информации.
 * Вы должны были получить копию Стандартной Общественной Лицензии GNU вместе
 * с программой. В случае её отсутствия, посмотрите <http://www.gnu.org/licenses/>.
 */

package tv.cofe.test

/**
 * Created by IntelliJ IDEA.
 * User: gocha
 * Date: 15.12.10
 * Time: 16:37
 * To change this template use File | Settings | File Templates.
 */

object testOpPrior
{
	var co = 0;

	class O(var txt:String)
	{
		def | (o:O):O = {
			val r = new O(this+"|"+o)
			co += 1;
			println(co + "."+r);
			r
		}
		def & (o:O):O = {
			val r = new O(this+"&"+o)
			co += 1;
			println(co + "."+r);
			r
		}
		def >> (o:O):O = {
			val r = new O(this+">>"+o)
			co += 1;
			println(co + "."+r);
			r
		}
		def > (o:O):O = {
			val r = new O(this+">"+o)
			co += 1;
			println(co + "."+r);
			r
		}
		def < (o:O):O = {
			val r = new O(this+"<"+o)
			co += 1;
			println(co + "."+r);
			r
		}
		def unary_! : O = {
			val r = new O("!"+this)
			co += 1;
			println(co + "."+r);
			r
		}

		def apply(x:String):O = {
			val r = new O("apply("+x+")")
			co += 1;
			println(co + "."+r);
			r
		}

		override def toString : String = if(txt!=null)txt else "null";
	}

	def main(args:Array[String]):Unit = {
		var o = new O("src");

		println("test 1:");
		o = o("a") >> o("b") | o("c") >> !o("d") & o("e");
		println(o);
	}
}